// 导入express框架
const express = require('express')
// 创建express实例
const app = express()
const bodyParser = require('body-parser')
// 导入cors（用来解决跨域问题）
const cors = require('cors')
const multer = require('multer')
// 在server服务端下新建一个public文件，在public文件下新建upload文件用于存放图片
const upload = multer({ dest: './public/upload' })

app.use(upload.any())
// 静态托管
app.use(express.static("./public"));

// 全局挂载
app.use(cors())

// urlencoded编码格式
// extended: false值值可以是字符串或数组
// extended: true值可以是任意类型
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// 用于处理json格式数据的方法
// parse application/json
app.use(bodyParser.json())

// 对错误中间件进行挂载(注册一个错误的中间件返回报错信息)
app.use((req, res, next) => {
	// status=0为成功，1为失败，默认为1，方便处理失败的情况
	res.cc = (err, status = 1) => {
		res.send({
			status,
			// 判断这个error是错误对象还是字符串
			message: err instanceof Error ? err.message : err
		})
	}
	next()
})


// 引入jwt密钥
const jwtConfig = require('./jwt_config/index.js')
// 引入express-jwt
const { expressjwt: jwt } = require('express-jwt')
// 使用中间件排除不需要在请求端发送的接口
// app.use(jwt({
// 	secret:jwtConfig.jwtSecretKey,algorithms:['HS256']
// }).unless({
// 	path:[/^\/api\//]
// }))

// 引入路由函数处理模块
const loginRouter = require('./router/login.js')
const Joi = require('joi')
app.use('/api', loginRouter)
// 引入上传头像路由
const userRouter = require('./router/userinfo.js')
// 挂载路由
app.use('/user', userRouter)
// 对不符合joi规则的情况进行报错
app.use((err, req, res, next) => {
	if (err instanceof Joi.ValidationError) {
		res.send({
			status: 1,
			message: '输入的数据不符合验证规则'
		})
	}
})


// 绑定和监听指定的主机和端口
app.listen(3007, () => {
	console.log('http://127.0.0.1:3007')
})